//
// Created by luolijun on 2021/11/6.
//

#ifndef FACADEBASE_H
#define FACADEBASE_H

#include "falcon/facade.h"

namespace falcon {

class FacadeBase : public Facade {
public:
    FacadeBase();

public: //  Facade
    virtual ~FacadeBase() override;
    virtual int32_t id() const override;
    virtual const falcon::Object* object() const override;
    virtual const falcon::Styles* styles() const override;
    virtual falcon::Object* object() override;
    virtual falcon::Styles* styles() override;
    virtual falcon::SIZE size() const override;
    virtual void size(const falcon::SIZE& sz) override;
    virtual falcon::POINT place() const override;
    virtual void place(const falcon::POINT& cpos) override;

    // public:
    //     virtual void draw(falcon::Painter& canvas) = 0;
    //     virtual Facade* clone() const = 0;
    //     virtual uint32_t scope() const = 0;

protected:
    falcon::RECT rect() const;

protected:
    falcon::SIZE _size;
    falcon::POINT _center;
    falcon::Object* _object;
    falcon::Styles* _styles;
};

} // namespace falcon
#endif // FACADEBASE_H
